package mq

import "context"

type MQMessage struct {
	Topic     string `json:"topic"`     // topic
	Qos       int    `json:"qos"`       // 0, 1, 2
	Body      []byte `json:"body"`      // 消息体
	Timestamp int64  `json:"timestamp"` // 时间戳
}

type IMsgHandler interface {
	Handle(ctx context.Context, msg MQMessage) error
}

type IMsgQueue interface {

	// 订阅消息
	Subscribe(ctx context.Context, topic string, handlers ...IMsgHandler) error

	// 反订阅
	Unsubscribe(ctx context.Context, topic string, handlers ...IMsgHandler) error

	// 发布消息
	Publish(ctx context.Context, msg MQMessage) error
}
